
// 题目：找单身狗1

// 一个数组中只有一个数字是出现一次，其他所有数字都出现了两次。
// 编写一个函数找出这一个只出现一次的数字。
// 例如：有数组的元素是：1，2，3，4，5，1，2，3，4。只有5,和要找出5。

int danshen(int a[],int n){
    int num=0;
    for(int i=0;i<n;i++){
        num=num^a[i];
    }
    return num;
}

#include<stdio.h>
int main(){
    int a[]={1,2,3,4,5,1,2,3,4};
    printf("%d\n",danshen(a,9));
    return 0;
}

// 第一个知识点，一个数去异或零都会得到原本的数
// 例如:4^0=100^000=100=4.
// 第二个知识点，一个数去异或自己都会得到0
// 例如:4^4=100^100=0
// 第三个知识点，异或操作符支持交换律